<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>axios拦截器可以实现的功能</title>
    <link rel="stylesheet" href="../assets/lib/NProgress/NProgress.css" />
  </head>
  <body>
    <script src="../assets/lib/NProgress/NProgress.js"></script>
    <script src="../assets/lib/axios.js"></script>
    <script>
      // 添加请求拦截器
      axios.interceptors.request.use(
        function (config) {
          // 在发送请求之前做些什么
          // console.log("请求拦截器触发了");
          NProgress.start();
          return config;
        },
        function (error) {
          // 对请求错误做些什么
          return Promise.reject(error);
        }
      );

      // 添加响应拦截器
      axios.interceptors.response.use(
        function (response) {
          // 2xx 范围内的状态码都会触发该函数。
          // 对响应数据做点什么
          // console.log("响应拦截器触发了");
          NProgress.done();
          return response;
        },
        function (error) {
          // 超出 2xx 范围的状态码都会触发该函数。
          // 对响应错误做点什么
          NProgress.done();
          return Promise.reject(error);
        }
      );
      // axios
      axios({
        url: "http://hmajax.itheima.net/api/province",
      }).then((response) => {
        console.log(response);
      });
      /* 
      axios拦截器可以实现的功能之统一加载：
      1、先把NProgress的css和js文件引入进来
      2、先把axios的js引入进来
      3、在请求拦截器第一个函数中添加NProgress的开启，NProgress.start();
      4、在响应拦截器第一个和第二个函数都添加NProgress的关闭： NProgress.done();
        这样成功或则失败都是需要关闭这个加载条
      */
    </script>
  </body>
</html>
